iCivil est une technologie d’enregistrement des faits d’état civil implémentée au Burkina Faso. Il s’agit d’une suite d’outils composée de smartphones distribués dans les formations sanitaires, d’ordinateurs et imprimantes présents dans les centres d’état civil des mairies et d’un serveur central installé à la Direction Générale de la Modernisation de l’Etat Civil (DGMEC) qui reçoit les données de l’ensemble du pays. Les smartphones sont utilisées par les agents de santé pour enregistrer systématiquement les naissances qui s’opèrent dans leurs locaux tandisque le dispositif installé dans les centres d’état civil permet après complément d’information, d’imprimer les actes de déclaration des faits d’état civil en question. Quant au serveur de la DGMEC, il stocke des données qui peuvent être utilisées pour produire des statistiques vitales. L’analyse qui va suivre utilise la première exportation de données du serveur.
iCivil is a newly introduced civil registration technology in Burkina Faso. It is a suite of tools consisting of smartphones distributed in health facilities, computers and printers in civil registration centers and a central server at the Directorate-General for the Modernisation of Civil Registration (DGMEC) which receives data from all over the country. Smartphones are used by health workers in maternity wards to systematically register births that take place on their premises, while computer installed in the civil registration centres makes it possible to print out the birth certificate. As for the server at DGMEC, it stores data that can be used to produce vital statistics. The following analysis uses the first data export from the server.
library(readxl) # Import .xlsx file into R
library(tidyverse) # Data manipulation & vizualization
library(plyr) # Split / combine data
library(naniar) # Deal with missing data
library(lubridate) # Work with dates in R
library(readr) # Import files in R
library(sp) # Work with goeo-spatial data in R
library(sf) # Work with goeo-spatial data in R
library(ggspatial)
library(pointblank) # Data validation
iCivil a déjà été déployé dans 09 communes et est en cours de déployements dans 06 autres communes du Burkina Faso. La carte ci-dessous indique les communes initiales de déployement du système.
iCivil has already been installed in 09 communes and is currently being deployed in 06 other communes in Burkina Faso. The map below shows the initial communes where the system is being installed.
bf_rds_3 <- read_rds("/Users/ramoudaneorousannou/Downloads/gadm36_BFA_3_sf.rds")
iCivil_Communes <- read_excel("/Users/ramoudaneorousannou/Downloads/iCivil_Communes.xls") %>%
rename(c( "Province" = "NAME_1",
"Commune" = "NAME_3"))
bf_rds_3_no_geom <- st_set_geometry(bf_rds_3, NULL)
bf_rds_3_1 <- bf_rds_3_no_geom %>%
left_join(iCivil_Communes, by = "NAME_3")
bf_rds_3_2 <- bf_rds_3_no_geom %>%
inner_join(iCivil_Communes, by = "NAME_3")
bf_rds_3 <- bf_rds_3 %>%
select("NAME_3", "geometry")
bf_rds_3 <- bf_rds_3_1 %>%
left_join(bf_rds_3, by = "NAME_3" )
(ggplot(data = bf_rds_3, aes(fill = Observation)) +
geom_sf(aes(geometry = geometry)) +
annotation_scale(location = "br", width_hint = 0.5) +
annotation_north_arrow(location = "br", which_north = "true",
pad_x = unit(0.75, "in"), pad_y = unit(0.5, "in"),
style = north_arrow_fancy_orienteering) +
coord_sf(crs = st_crs(4326)) +
labs(title = 'Communes Initiales de Déploiement du Système iCivil', x = NULL, y = NULL,
fill = NULL) + scale_fill_manual(values = c("#FFDB6D", "#00AFBB", "#999999")))
La base de données contient un total de 12 variables portant sur la naissance, le lieu de naissance, la déclaration et les informations sur la mère du nouveau né.
The database has a total of 12 variables containing information on the newborn, place of birth, birth registration and mother.
icivil_data_18_03 <- read_excel(path = "/Users/ramoudaneorousannou/Downloads/EXPORT-BD-ICIVIL-DGMEC_18mars2020_Final.xls",
sheet = "EXPORT", na = " ", col_names = TRUE)
icivil_data_18_03
#read.csv("/Users/ramoudaneorousannou/Downloads/EXPORT-BD-ICIVIL-DGMEC_18mars2020_Final.csv")
# on peut utiliser la fonction ''read.csv'' si la base est exportée en format ".csv"
# "read.csv" can be used in case the database is exported in ".csv" format
Sur le logiciel R le concept de ‘’Tidy data’’ est souvent utilisé et fait allusion à la présentation de toute base de données dans un format bien spécifique répondant à trois règles de base:
Nous allons essayer donc de transformer la base de données de façon à ce qu’elle réponde à ces critères.
On R, the concept of ‘’Tidy data’’ is often used and refers to presenting any database in a very specific format that meets three basic rules:
We’re going to transform this database so that it meets these criteria.
#separation de la date d'activation et de l'heure d'activation du smartphone //
#Separating activation date from activation time of the smartphone
icivil_data_18_03 <- separate(icivil_data_18_03, Date_activation,
c("date_activation", "heure_activation"), sep = " ")
#separation de la date de naissance et de l'heure de naissance du nouveau-né //
#Separating birth date from time of birth of the newborn
icivil_data_18_03 <- separate(icivil_data_18_03, Date_heure,
c("date_naissance", "heure_naissance"), sep = " ")
#separation de la date de naissance et de l'heure de naissance de la maman // Separating birth date from time of birth of the mother
icivil_data_18_03 <- separate(icivil_data_18_03,
"Date de naissance de la mère",
c("date_naissance_mere", "heure_naissance_mere"), sep = " ")
head(icivil_data_18_03)
#str(icivil_data_18_03)
#sélection des variables qui nous intéressent // selecting variables of interest
icivil_data_18_03 <- icivil_data_18_03 %>%
select("date_activation",
"Sexe",
"date_naissance",
"Lieu de naissance",
"GPS Lat.",
"GPS Long.",
"Déclaré par",
"date_naissance_mere") %>%
# On renome les variables suivant les standars conseillés sur R avec l'approche tidyverse //
#Variables are renamed according to the recommended standards in R.
rename(c("date_naissance" = "date_naissance_enfant",
"Lieu de naissance" = "lieu_naissance",
"GPS Lat." = "lat",
"GPS Long." = "long",
"Déclaré par" = "declarant"))
head(icivil_data_18_03)
str(icivil_data_18_03)
## tibble [6,731 × 8] (S3: tbl_df/tbl/data.frame)
## $ date_activation : chr [1:6731] "2020-03-18" "2020-03-18" "2020-03-18" "2020-03-18" ...
## $ Sexe : chr [1:6731] "Masculin" "Féminin" "Féminin" "Masculin" ...
## $ date_naissance_enfant: chr [1:6731] "2020-03-17" "2020-03-17" "2020-03-17" "2020-03-18" ...
## $ lieu_naissance : chr [1:6731] "NOUNA" "NOUNA" "KAYA" "KAYA" ...
## $ lat : chr [1:6731] "12.75617" "12.75616" "13.06218" "13.06204" ...
## $ long : chr [1:6731] "-3.877577" "-3.877474" "-1.087752" "-1.087689" ...
## $ declarant : chr [1:6731] NA NA NA NA ...
## $ date_naissance_mere : chr [1:6731] NA NA NA NA ...
detach(package:plyr) # je détache ce package pour éviter des erreurs au cours
# de l'utilisation de la fonction "group_by" de dplyr //
# I detach plyr package to avoid errors while using the "group_by" function of dplyr
vis_miss(icivil_data_18_03, sort_miss = TRUE)
36% of the data in the database is missing. La carte thermique nous montre que 80 % des données concernant la date de naissance de la mère du nouveau-né et le déclarant sont manquantes.
36.5 % of the data in the database is missing. The heat map shows us that 80% of the data the newborn’s mother date of birth and the declarer are missing.
icivil_data_18_03 <- icivil_data_18_03 %>%
select("lieu_naissance",
"Sexe",
"date_naissance_enfant",
"declarant",
"date_naissance_mere")
gg_miss_var(icivil_data_18_03, facet = lieu_naissance, show_pct = T)
On remarque que dans la plupart des lieux de naissances, les deux variables citées précédemment (date de naissance de la mère et déclarant) manquent souvent à plus de 75%, parfois même à 100 %. Ceci s’explique par le fait que les parents ne complètent pas les informations requises après l’enrégistrement systématique fait à la maternité.
In most birthplaces, the two variables mentioned above (mother’s date of birth and declarer) are often missing by more than 75%, sometimes even 100%. This is due to the fact that parents do not complete the required information after the systematic registration made at the maternity wards.
Pour des raisons d’uniformité, j’ai dû renomer certains lieux de naissances en utilisant uniquement le nom de la ville. Le nettoyage de la colonne sur le lieu de naissance avec les commandes de R s’avère un peu ennuyeux. J’ai donc utilisé Excel pour uniformiser les noms des communes. Cependant j’ai esssayé d’écrire une fonction pour donner une idée de comment cela aurait pu se faire sur R. Mais la fonction ne pourrait être efficace si les agents de santé n’entrent pas les noms de façon uniforme. Il serait bien de rappeler aux agents la necessité de ne mettre que le nom de la commune de naissance.
For the sake of uniformity, I had to rename some birthplaces by indicating only the name of the municipality where it took place. Cleaning up the birthplace column with R commands proved a bit annoying. One could use Excel to do it (that is what I did). However I tried to write a function to give an idea of how this could be done on R. But the function will not be effective if the health workers don’t enter the names uniformly (welcome any better idea). It would be good to remind them of the need to only enter the name of the municipality (commune) of birth.
#fix_location_names <- function(data, l) {
#mutate(data, lieu_naissance =
#ifelse(grepl("OUAGA", l), "OUAGADOUGOU",
#ifelse(grepl("KAYA", l), "KAYA",
#ifelse(grepl("NOUNA", l), "NOUNA",
#ifelse(grepl("NANORO", l), "NANORO",
#ifelse(grepl("LEKUY"), l), "LEKUY",
#ifelse(grepl("LARABANI", l), "LARABANI",
#ifelse(grepl("KOUDOUGOU", l), "KOUDOUGOU",
#ifelse(grepl("BOURASSO", l), "BOURASSO",
#ifelse(grepl("TENKODOGO", l), "TENKODOGO",
#ifelse(grepl("DOKUY", l), "DOKUY",
#ifelse(grepl("KAMBOINCE", l), "KAMBOINCE",
#ifesle(grepl("FADA", l), "FADA",
#ifelse(grepl("BOBO DIOULASSO", l), "BOBO DIOULASSO",
#ifelse(grepl("GUIRGHO", l), "GUIRGHO",
#ifelse(grepl("OUAHIGOUYA", l), "OUAHIGOUYA",
#ifelse(grepl("SIKORO", l), "SIKORO",
#ifelse(grepl("SOAW", l), "SOAW",
#ifelse(grepl("SOUM", l), "SOUM")))))))))))))))))))
#}
#icivil_data_18_03 <-fix_location_names(data = icivil_data_18_03, l = lieu_naissance)
# Comptons le nombre de naissances par sexe (ceci est probablement visible
# directement sur la plateforme iCivil) //
# Let's count the total number of births by sex (this might probably be visible
# directly on the iCivil platform)
icivil_data_18_03_sex_count <- icivil_data_18_03 %>%
dplyr::group_by(Sexe) %>%
count()
icivil_data_18_03_sex_count
Un total de 3309 nouveau-nés sont de sexe féminin contre 3422 de sexe masculin. // A total of 3309 newborns are female and 3422 are males.
# Comptons les naissances par lieu de naissances // Births count by place of birth
icivil_data_18_03_city_count <- icivil_data_18_03 %>%
dplyr::group_by(lieu_naissance) %>%
count() %>%
rename(total_naissance = n)
icivil_data_18_03_city_count
# les naissances sur les sites pilotes de UNFPA deux mois après installation //
# Birth registration on the UNFPA pilot sites 2 months after the technology
# was deployed
(plot_pilots <-icivil_data_18_03 %>%
filter(lieu_naissance %in% c("KAYA", "NOUNA","NANORO", "SOAW","DOKUY", "BOURASSO")) %>%
group_by(lieu_naissance, Sexe) %>%
count() %>%
group_by(lieu_naissance) %>%
mutate(total_naissance = sum(n)) %>%
ggplot(aes(x = fct_reorder(lieu_naissance, total_naissance,
.desc = T), y = n, fill = Sexe)) +
geom_col() +
theme(plot.title = element_text(hjust = 0.5)) +
labs(title = 'Les naissances sur les sites pilotes de UNFPA par sexe',
x = NULL, y = NULL))
Les naissances sont plus nombreuses à Kaya, il faudrait donc s’attendre à ce que les intrants nécessaires à l’enrégistrement des naissances s’épuisent à Kaya bien avant les autres sites // There is more birth registration in Kaya, so it is to be expected that the inputs needed for birth registration will be exhausted in Kaya well before the other sites.
(icivil_sex_ratio <- icivil_data_18_03 %>%
filter(lieu_naissance %in% c("OUAGADOUGOU", "FADA", "KAMBOINCE",
"KAYA", "NANORO", "NOUNA", "TENKODOGO")) %>%
group_by(lieu_naissance, Sexe) %>%
summarise(nombre = n()) %>%
spread(Sexe, nombre) %>%
mutate(sexe_ratio = Masculin / Féminin) %>%
mutate(interpretation_sexe_ratio = ifelse(sexe_ratio > 1,
" Plus de garçons que de filles",
"Plus de filles que de garçons")))
## `summarise()` regrouping output by 'lieu_naissance' (override with `.groups` argument)
list_municipalities <- list("OUAGADOUGOU" = "Ouagadougou",
"FADA" = "Fada N'gourma",
"KAMBOINCE" = "Kamboincé", "KAYA" = "Kaya",
"NANORO" = "Nanoro", "NOUNA" = "Nouna",
"TENKODOGO" = "Tenkodogo")
icivil_sex_ratio <- icivil_sex_ratio %>%
rename(NAME_3 = lieu_naissance) %>%
mutate_at("NAME_3", recode, !!!list_municipalities)
bf_rds_3 <- read_rds("/Users/ramoudaneorousannou/Downloads/gadm36_BFA_3_sf.rds")
st_crs(bf_rds_3 )
## Coordinate Reference System:
## User input: EPSG:4326
## wkt:
## GEOGCS["WGS 84",
## DATUM["WGS_1984",
## SPHEROID["WGS 84",6378137,298.257223563,
## AUTHORITY["EPSG","7030"]],
## AUTHORITY["EPSG","6326"]],
## PRIMEM["Greenwich",0,
## AUTHORITY["EPSG","8901"]],
## UNIT["degree",0.0174532925199433,
## AUTHORITY["EPSG","9122"]],
## AUTHORITY["EPSG","4326"]]
bf_rds_3_no_geom <- st_set_geometry(bf_rds_3, NULL)
bf_rds_3_1 <- bf_rds_3_no_geom %>%
left_join(icivil_sex_ratio, by = "NAME_3")
bf_rds_3 <- bf_rds_3 %>%
select("NAME_3", "geometry")
bf_rds_3 <- bf_rds_3_1 %>%
left_join(bf_rds_3, by = "NAME_3" )
ggplot(data = bf_rds_3, aes(fill = interpretation_sexe_ratio)) +
geom_sf(aes(geometry = geometry)) +
coord_sf(crs = st_crs(4326)) +
labs(title = 'Sexe-ratio des communes ayant plus de 100 naissances', x = NULL, y = NULL)
Pour le moment, seule la commune de Nouna enregistre plus de naissance de filles que de garçons. Aussi, nous n’avons pa pu retrouver ‘’Kamboincé’’ dans le découpage territorial. S’agit-il d’une commune ou d’un quartier ou peut-être une faute d’orthographe (à clarifier).
icivil_data_18_03_declared_by_city <-
icivil_data_18_03 %>%
group_by(lieu_naissance, !is.na(declarant)) %>%
count() %>%
rename(declaration = "!is.na(declarant)")
icivil_data_18_03_declared_by_city
# Pour rajouter le nombre total de naissances enregistrées dans chaque commune au tableau des declarations //
# Adding the total number of registered births in each municipality to the declaration table
icivil_data_18_03_declared_by_city <-
full_join(icivil_data_18_03_declared_by_city,
icivil_data_18_03_city_count, by = "lieu_naissance" )
icivil_data_18_03_declared_by_city
# Calcul du taux de déclaration des naissances par commune (on maintient
# uniquement les communes où il y a eu des délivrance d'acte de naissance) //
# Computing the birth registration rate by municipality (only municipalities
# where birth certificates were issued by the civil registration center are
# kept in this analysis)
(icivil_data_18_03_rate_declaration <-
icivil_data_18_03_declared_by_city %>%
filter(declaration == T) %>%
mutate(taux_declaration = 100 *n / total_naissance))
Sur un total de 18 lieux de naissance (ou communes), 15 apparaissent comme lieux où s’est effectué au moins une délivrance d’acte de naissance. Les trois communes où aucune délivrance n’a eu lieu sont:
On peut essayer de comprendre les raisons de cette absence de délivrance à travers une analyse plus poussée tenant compte d’autres facteurs tels la position géographique de ces communes, l’existence et la proximité des centres d’état civil équipés du système iCivil.
Out of a total of 18 places of birth (or commune), 15 appear as places where at least one birth certificate was issued. There were three municipalities whith no issued birth certificate:
To understand the reason why no birth certificate was issued in these three municipalities, it would be necessary to factor in the existence and closeness of civil registration centers equiped with iCivil in those regions.
# Taux de délivrance d'acte de naissance par commune //
# Birth certificate issuance rate by municipality
plot_declarations <-
ggplot(icivil_data_18_03_rate_declaration,
aes(x = reorder(lieu_naissance, taux_declaration), y = taux_declaration)) +
geom_col(fill = "#56B4E9") +
theme(plot.title = element_text(hjust = 0.5)) +
coord_flip() +
labs(title = "Taux de délivrance d'actes de naissance par commune", x = NULL, y = NULL)
plot_declarations
Malgré que iCivil soit installé à Ouagadougou depuis 4 ans, le taux de délivrance d’acte de naissance reste faible à 18.02 %. Par contre, dans les localités où l’UNFPA a déployé le système (localités plutôt rurales), le taux de délivrance d’acte de naissance parait interessant en l’espace de 2 mois. C’est le cas de Nouna avec un taux de 40.33 %, Kaya avec un taux de 38.31 %. A Nanoro, le taux de délivrance reste faible à 10.56 %. Certaines localités rurales affichent des taux de 100% même si elles ont chacunes enregistré moins de 12 naissances, ce qui n’est pas surprenant.
Although iCivil has been operating in Ouagadougou for 4 years, the birth certificate issuance rate remains low at 18.02 %. However, in the UNFPA sites (rather rural areas), the issuance rate seems encouraging after just 2 months. In Nouna we have a rate of 40.33%, Kaya has a rate of 38.31%. In Nanoro, the issuance rate remains very low at 10.56%. Some others rural areas have rates of 100% though they only registered fewer than 12 births each.
icivil_data_18_03_declared_by_sex <-
icivil_data_18_03 %>%
group_by(lieu_naissance, Sexe, !is.na(declarant)) %>%
count() %>%
rename(declaration = "!is.na(declarant)") %>%
full_join(icivil_data_18_03_city_count, by = "lieu_naissance" )
(icivil_declaration_by_sex <-
icivil_data_18_03_declared_by_sex %>%
filter(declaration == T) %>%
mutate(taux_declaration_sex = 100 *n / total_naissance))
(plot_declarations_sex <-
ggplot(icivil_declaration_by_sex, aes(x = reorder(
lieu_naissance, taux_declaration_sex), y = taux_declaration_sex, fill = Sexe)) +
geom_col() +
theme(plot.title = element_text(hjust = 0.5)) +
coord_flip() +
labs(title = "Taux de délivrance d'actes de naissance
par sexe dans les communes", x = NULL, y = NULL))
Pour l’analyse de ces graphes il serait plus intéressant de se focaliser sur les communes comme OUAGADOUGOU (3650), KAYA (950), FADA (671), TENKODOGO (432), NOUNA (357), NANORO (303), KAMBOINCE (139), qui ont enrégistré plus de 100 naissances. OUAGADOUGOU est particulièrement intéressant parcequ’elle dispose de données sur 4 années. Cependant, à mesure que la base recevra plus de données d’enregistrement, des analyses peuvent être faites sur l’ensemble des communes. Reprenons le graphe précédant en considérant ces communes.
For a better analysis of these graphs, it would be more interesting to focus on cities like OUAGADOUGOU (3650), KAYA (950), FADA (671), TENKODOGO (432), NOUNA (357), NANORO (303), KAMBOINCE (139), which have more than 100 declared births. OUAGADOUGOU is particularly interesting because it has data over 4 years. As the database receives more registration data, analyses can be made for all involved minicipalities. Let’s plot the previous graph again but this time considering cities with more than a hundred declared births.
(plot_declarations_sex_relevant <-
ggplot(icivil_declaration_by_sex %>%
filter(lieu_naissance %in%
c("OUAGADOUGOU", "FADA", "KAMBOINCE",
"KAYA", "NANORO", "NOUNA", "TENKODOGO")),
aes(x = fct_reorder(lieu_naissance, taux_declaration_sex),
y = taux_declaration_sex, fill = Sexe)) +
geom_col() +
coord_flip() +
theme(plot.title = element_text(hjust = 0.5)) +
labs(title = "Taux de délivrance d'actes de naissance
par sexe dans les communes ayant enregistré plus de 100 naissances", x = NULL, y = NULL))
delivrance_unfpa <- icivil_declaration_by_sex %>%
filter(lieu_naissance %in% c("KAYA", "NOUNA","NANORO", "SOAW","DOKUY", "BOURASSO")) %>%
rename(pourcentage_delivrance_acte_sex = taux_declaration_sex)
library(knitr)
## Warning: package 'knitr' was built under R version 3.6.2
kable(delivrance_unfpa)
| lieu_naissance | Sexe | declaration | n | total_naissance | pourcentage_delivrance_acte_sex |
|---|---|---|---|---|---|
| BOURASSO | Féminin | TRUE | 5 | 39 | 12.820513 |
| BOURASSO | Masculin | TRUE | 4 | 39 | 10.256410 |
| DOKUY | Féminin | TRUE | 3 | 75 | 4.000000 |
| DOKUY | Masculin | TRUE | 8 | 75 | 10.666667 |
| KAYA | Féminin | TRUE | 175 | 950 | 18.421053 |
| KAYA | Masculin | TRUE | 189 | 950 | 19.894737 |
| NANORO | Féminin | TRUE | 15 | 303 | 4.950495 |
| NANORO | Masculin | TRUE | 17 | 303 | 5.610561 |
| NOUNA | Féminin | TRUE | 77 | 357 | 21.568628 |
| NOUNA | Masculin | TRUE | 67 | 357 | 18.767507 |
(plot_issuance_sex_unfpa <-
ggplot(icivil_declaration_by_sex %>%
filter(lieu_naissance %in% c("KAYA", "NOUNA","NANORO", "SOAW","DOKUY", "BOURASSO")),
aes(x = fct_reorder(lieu_naissance, taux_declaration_sex),
y = taux_declaration_sex, fill = Sexe)) +
geom_col() +
coord_flip() +
theme(plot.title = element_text(hjust = 0.5)) +
labs(title = "Pourcentage de délivrance d'actes de naissance
par sexe dans les communes pilotes en 2 mois", x = NULL, y = NULL))
Nous constatons le faible taux de délivrance d’actes de naissances dans la commune de FADA qui pourtant se retrouve en 3e position en matière de nombre d’enregistrement de naissances. Aussi, les communes de KAYA et NOUNA malgré qu’elles viennent de recevoir le système iCivil (il y a 2 mois avec les fonds innovation) affichent des taux de délivrance plutôt encourageants comparés à celui de OUAGADOUGOU qui dispose du système depuis 4 ans.
Une grande question pour le cas de Ouagadougou est de savoir si les gens ont toujours accès au système de délivrance traditionnel et, si oui, lequel ils préfèrent. Le taux de délivrance est probablement plus élevé si c’est le cas.
We note that the lowest rate of birth certificate issuance is in FADA, yet the municipality has the 3rd highest number of registered births. Also, in KAYA and NOUNA despite the fact that they have just received the iCivil system (2 months ago) show rather encouraging rates of birth certificate issuance rate compared to that of OUAGADOUGOU which has had the system for 4 years. Birth certificate issuance rate by sex is more or less the same in most cities.
One major question for the case of Ouagadougou is whether or not people still have access to the traditional birth certificate issuance system and if so, which one they prefer. The birth certificate issuance rate is probably higher if that is the case.
icivil_data_18_03_declarants <- icivil_data_18_03 %>%
filter(!is.na(declarant)) %>%
mutate(declarant = ifelse(grepl("petit frère père", declarant), "oncle",
ifelse(grepl("grand père", declarant), "grand-père",
ifelse(grepl("Grand-mère", declarant), "grand-mère",
ifelse(grepl("père", declarant),"père",
ifelse(grepl("mère", declarant), "mère",
ifelse(grepl("oncle", declarant), "oncle",
ifelse(grepl("tante", declarant), "tante",
ifelse(grepl("soeur", declarant), "grande soeur",
ifelse(grepl("grand frère", declarant), "grand frère", "autre"))))))))))
#le decompte des types de declarant // counting the types of declarers
icivil_data_18_03_declarants %>%
group_by(declarant) %>%
count()
# les declarants par commune // Declararers by municipality
cbPalette <-
c("#999999", "#56B4E9", "#E69F00", "#009E73",
"#F0E442", "#0072B2", "#D55E00", "#CC6666", "#66CC99")
(plot_icivil_data_18_03_declarants <- icivil_data_18_03_declarants %>%
group_by(lieu_naissance, declarant) %>%
count() %>%
group_by(lieu_naissance) %>%
mutate(total_declaration = sum(n)) %>%
ggplot(aes(x = reorder(lieu_naissance, total_declaration), y = n, fill = declarant)) +
geom_col() +
theme(plot.title = element_text(hjust = 0.5)) +
coord_flip() +
scale_fill_manual(values = cbPalette) +
labs(title = 'Les types de declarants par commune', x = NULL, y = NULL))
Les déclarations des naissances sont en générale faites par le père de l’enfant sauf à Nanoro où sur 32 nouveaux-nés, 31 ont été déclarés par leur mère. Cela a-t-il un lien avec le faible taux de déclaration à Nanoro constaté plus haut? Est-ce-que les pères des nouveaux-nés à Nanoro sont moins intéressés par la déclaration de leurs enfants comparés à ceux de Nouna et Kaya ?
Births are generally declared by the father of the newborn, except in Nanoro, where 31 out of 32 newborns were declared by their mother. Could this explain the low declaration rate in Nanoro as noted above? Are fathers of newborns in Nanoro less interested in declaring their children compared to those in Nouna and Kaya?
# Fonction permettant de calculer un nombre entier exact d'années entre deux dates //
# Function to calculate an exact whole number of years between two dates
year.diff <- function(firstDate, secondDate) {
yearsdiff <- year(secondDate) - year(firstDate)
monthsdiff <- month(secondDate) - month(firstDate)
daysdiff <- day(secondDate) - day(firstDate)
if ((monthsdiff < 0) | (monthsdiff == 0 & daysdiff < 0)) {
yearsdiff <- yearsdiff - 1
}
yearsdiff
}
# Conversion de la date de naissance des enfants comme objet POSIXct //
# Converting newborns' birth date as POSIXct object
icivil_data_18_03$date_naissance_enfant <- as.POSIXct(icivil_data_18_03$date_naissance_enfant)
#calcul de l'age de la maman à la naissance de l'enfant // mother's age at birth
(icivil_data_18_03_age_mothers <- icivil_data_18_03 %>%
filter(!is.na(declarant)) %>%
mutate(age_mere = year.diff(date_naissance_mere, date_naissance_enfant)))
# mères agées de moins de 18 ans // teenage mothers
(icivil_data_18_03_underaged_mothers <- icivil_data_18_03_age_mothers %>%
filter(age_mere < 20))
# le nombre de mères adolescentes par commune //
# plotting the number of teenage mothers per municipality
(plot_underaged_mothers <-
icivil_data_18_03_underaged_mothers %>%
filter(age_mere > 10) %>%
group_by(lieu_naissance) %>%
count() %>%
ggplot(aes(x = fct_reorder(lieu_naissance, n, .desc = T), y = n )) +
geom_col(fill = "#FF9999", colour = "black") +
theme(plot.title = element_text(hjust = 0.5)) +
labs(title = 'Nombre de mères adolescentes par commune', x = NULL, y = NULL)) #+
#scale_y_continuous(breaks= seq(0, 10)))
On remarque un total de 24 mamans agées de moins de 18 ans. La commune de Kaya compte le plus grand nombre de mères adolescentes. Nous avons aussi remarqué plusieurs cas où la date de naissance de la mère a été probablement mal entrée avec pour conséquence des mamans agées de moins de 10 ans et dans certains cas des mamans de 105 ans. Une manière de rémédier à cela serait d’introduire des limites (contraintes) dans l’application iCivil. Aussi, il serait intéressant si iCivil insère une variable sur la date de naissance du père et sa profession. Ces données pourront être utilisées plus tard pour des analyses plus poussées.
There are 24 mothers under the age of 18. The municipality of Kaya has the highest number of teenage mothers. We also noticed several cases where the mother’s date of birth was probably entered incorrectly, resulting in mothers under 10 years old and in some cases 105 years old. To prevent this from happening again it would be good to introduce limitations (constraints) in the iCivil application. Also, it would be interesting if iCivil inserts a variable on the date of birth of the father and his profession. These data could be used later for further analysis.
al <- action_levels(warn_at = 1)
create_agent(tbl = icivil_data_18_03_age_mothers, actions = al) %>%
col_vals_lt(vars(age_mere), 20) %>%
col_vals_gt(vars(age_mere), 50) %>%
interrogate()
La date de délivrance de l’acte de naissance n’est pas encore disponible mais j’ai crée une colonne avec des dates fictives pour l’analyse. Cette partie de l’analyse est donc purement fictive avec pour seul objectif de montrer comment on peut utiliser les dates pour certaines analyses.
The date of birth certificate issuance is not yet available on the exported database but I created a column with fictitious dates for demonstration purpose. This part of the analysis is thus purely fictitious with the sole purpose of showing how the dates can be used for certain analyses.
# puisque la base de données exportée ne contient pas encore une variable sur date de délivrance
# de l'acte de naissance, nous allons la créer puis la transformer ici //
# since the exported database does not yet contain a variable on the birth
# certificate issuance date, we will create it and transform it here.
icivil_data_18_03 <- icivil_data_18_03 %>%
mutate(date_declaration = ifelse(is.na(declarant) == F, "2020-03-18", NA))
head(icivil_data_18_03, 100)
# Conversion en variable de type "POSIXct" qui est un objet pour les dates sur R //
# converting the new variable as a "POSIXct" object
icivil_data_18_03$date_declaration <- as.POSIXct(icivil_data_18_03$date_declaration)
# Creation de la variable du temps mis pour retirer l'enfant //
# Creating a variable on the time taken by parents to get the newborns' birth certificate
icivil_data_18_03_declared <- icivil_data_18_03 %>%
filter(!is.na(date_declaration)) %>%
mutate(temps_declaration =
difftime(date_declaration, date_naissance_enfant, units = "days")) %>%
separate(temps_declaration, c("temps_declaration", "unite_temps"), sep = " ")
#separation de l'unité de temps // separating the time unit
icivil_data_18_03_declared$unite_temps <- NULL #suppression des unités // deleting the units
icivil_data_18_03_declared$temps_declaration <- as.integer(icivil_data_18_03_declared$temps_declaration) #conversion de la variable temps en une variable numerique // converting issuance time to integer
icivil_data_18_03_declared_by_city <- icivil_data_18_03_declared %>%
group_by(lieu_naissance) %>%
summarize(temps_moyen_declaration = mean(temps_declaration))
## `summarise()` ungrouping output (override with `.groups` argument)
(plot_average_declaration_time <- ggplot(icivil_data_18_03_declared_by_city,
aes(x= reorder(lieu_naissance,
temps_moyen_declaration),
y = temps_moyen_declaration)) +
geom_col(fill = "blue") +
theme(plot.title = element_text(hjust = 0.5)) +
coord_flip() +
labs(title = 'Nombre de jours moyen mis par les populations
pour compléter les déclarations de naissances par commune',
x = NULL, y = NULL))
Il serait inutile de commenter ce graphe. Par contre, on sait que le délais légal pour finaliser la déclaration d’un un nouveau-né au Burkina Faso est de 2 mois. C’est ainsi dire que les déclarations (avec délivrance d’acte de naissance) faites dans les sites pilotes de l’UNFPA où la technologie iCivil vient d’être déployée (entre le 16 et le 24 Janvier) sont certainement dans les délais et peuvent être considérées comme les proportions réelles de délivrance d’acte de naissance dans ces milieux, pour la population considérée.
It would be pointless to comment on this graph. However, as we know that the legal time limit for completing the declaration of a newborn in Burkina Faso is 2 months, this means that the declarations made in the UNFPA pilot sites where the iCivil technology has just been deployed (16-24 Jan) are certainly within the timeframe and can be considered as the real proportions of birth certificate issuance in these settings, for the considered population.